L'enginyeria de programari és la disciplina o àrea de la informàtica que ofereix mètodes i tècniques per a desenvolupar i mantenir un programari de qualitat. La creació del programari és un procés intrínsecament creatiu, l'enginyeria de programari pretén sistematitzar aquest procés amb la finalitat d'acotar el risc del fracàs en la consecució de l'objectiu creatiu i ho fa per mitjà de diverses tècniques que s'han demostrat adequades a partir de l'experiència prèvia. Aquesta enginyeria tracta amb àrees molt diverses de la informàtica i de les ciències de la computació, com ara la construcció de compiladors i els sistemes operatius; utilitza totes les fases del cicle de vida del desenvolupament de qualsevol tipus de sistemes d'informació i és aplicable a infinitat d'àrees: negocis, investigació científica, medicina, logística, banca, control del trànsit, meteorologia, dret, Internet…
El terme enginyeria de programari va ser popularitzat l'any 1968 a la NATO Software Engineering Conference -que va tenir lloc a Garmisch, Alemanya- pel seu president F.L. Bauer, i s'ha fet servir àmpliament des de llavors. La disciplina d'enginyeria de programari comprèn coneixements, eines, i mètodes per a la definició de requisits de programari, i la realització de tasques de disseny de programari, programació de computadores, disseny d'interfícies d'usuari, proves de programari, i manteniment de programari.[1]
L'enginyeria de programari també es basa en coneixements de ciències de la computació, enginyeria de la computació, gestió, matemàtiques, gestió de projectes, gestió de la qualitat, ergonomia de programari, i enginyeria de sistemes.[1]
El terme enginyeria de programari ha generat certa polèmica, ja que és discutible que el desenvolupament de programes informàtics sigui més un art que una ciència,[2] i que tractar d'imposar disciplines de l'enginyeria sobre un tipus d'art, com el que representa una bona pràctica a la creació de programari, és un exercici inútil.[3]
L'Institut d'Enginyers Elèctrics i Electrònics defineix "Enginnering programari" com l'aplicació d'un enfocament sistemàtic, disciplinat, un enfocament quantificable al desenvolupament, operació i manteniment del programari, i l'estudi d'aquests enfocaments, és a dir, l'aplicació d'Enginyeria del programari.[4]
L'enginyeria de software va aparèixer per primera vegada el 1968 a la Conferència d'Enginyeria de Software de l'OTAN i estava destinada a suscitar la reflexió sobre l'actual "crisi del programari" en aquell moment.[5] [6] Des d'aleshores, ha continuat com a professió i el su camp d'acció és dissenyar, implementar i millorar el programari que és de més qualitat, més accessible, més fàcil de mantenir i més ràpid de desenvolupar. Atès que el camp és encara relativament jove en comparació amb els seus germans dels camps de l'enginyeria, hi ha molt debat sobre què és realment l'enginyeria de programari, i si s'ajusta a la definició clàssica de l'enginyeria.
Tot i que és discutible l'impacte que ha tingut durant el desenvolupament de programes efectius als últims 40 anys,[7][8] el futur del camp sembla brillant d'acord amb Money Magazine i Salary.com que van qualificar l'"enginyeria de programari" com el millor treball als Estats Units en 2006.[9]